package cn.hchaojie.javase.week1;

public class Test2 {
	public static void main(String[] args) {
		byte b = 0;
		
		// byte类型是8位，最高位是符号位，0是正数，1是负数。
		// byte类型最大值：0111 1111
		// 0111 1111 + 1 = 1000 0000  = 2的7次方
		// 0111 1111 = 2(7) - 1
		
		/*
		 * 位移运算，2的x次方 = 1 << x
		 * 
		 * 1 << 1  = 10 = 1 * 2(1)
		 * 1 << 2  = 100 = 1 * 2(2)
		 * 所以： 1左移几位，就相当于 1 * 2的几次方
		 * 推广： 3左移几位，就像顿时 3 * 2的几次方
		 * 
		 * 十进制：
		 * 5 << 2  = 500 = 5 * 10(2)
		 * 十进制左移几位，就相当于乘以 10的几次方
		 */
		
		// 使用工具类
		b = (byte) (Math.pow(2, 7) - 1);		// 强制转换类型
		System.out.println(b);
		
		// 使用移位运算符		1	-> 10  = 1 * 2(1), 左移几位，就乘以2的几次方
		//						11  -> 110 = 3 * 2(1)
		b = (1 << 7) - 1;
		System.out.println(b);
		
		long l = 125;
		
		byte b2 =  (byte) l;
		
		System.out.println(b2);
	}
}
